单片机C51 之(8)GPIO 显示

您所在的位置:网站首页 uchar code segcode 单片机C51 之(8)GPIO 显示

单片机C51 之(8)GPIO 显示

2024-06-04 16:42| 来源: 网络整理| 查看: 265

一个数码管就占用控制器8个管脚,如果4位就需要32个管脚,显然静态显示方法在实际使用中是有很大的缺陷。 51单片机4组GPIO可以驱动4个数码管,那如果多个呢? 这里就引入动态扫描的概念: 根据视觉暂留现象的表现,只要切换速度达到一定的频率之后,人是分辨不出来的,就像人看不见子弹飞过一样。同理如果让每个数码管轮流显示,而不是全部显示。利用视觉暂留现象,人类是不会发现哪个数码管没有显示的。只要切换速度过快,就可以解决静态显示带来过度占用GPIO的问题。

这样将所有的公共端用GPIO控制,不再像静态显示那样,公共端接电源。段控制脚用一组GPIO控制起来: 在这里插入图片描述 这样的情况下,只要在让对应的数码管显示的时候 使能对于公共端(位码)就可以了。

#include #define uchar unsigned char #define uint unsigned int void DelayTime10ms(unsigned int DelayValue); uchar code SegCode[] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0xff}; //共阳 uchar code DSY_IDX[] = {0x01,0x02,0x04,0x08,0x10,0x20}; //位码 void DelayMS(uint x) { uchar t; while(x--) for(t = 0;t for(i = 0;i


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3